package com.guan.oss.utils;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * implements InitializingBean
 * 一启动项目，这个类会交给Spring管理，在管理的过程中，通过value注解读取到配置文件中的值复制给对应的属性，
 * 然后在这个类初始化的时候，会执行这个接口中的方法afterPropertiesSet()
 */
@Component
public class ConstandPropertiesUtils implements InitializingBean {

    //读取配置文件的内容
    @Value("${aliyun.oss.file.endpoint}")
    private String endpoint;

    @Value("${aliyun.oss.file.keyid}")
    private String keyid;

    @Value("${aliyun.oss.file.keysecret}")
    private String keysecret;

    @Value("${aliyun.oss.file.bucketname}")
    private String bucketname;

    //定义公开静态常量
    public static String END_POINT;
    public static String KEY_ID;
    public static String KEY_SECRET;
    public static String BUCKET_NAME;
    /**
     * 为了外边能够使用当前类的属性
     * 疑问：为何不直接使用public定义读取到配置文件内容的属性？
     * 答：1. 遵循开发规范。2. 直接public 容易被修改
     * @throws Exception
     */
    @Override
    public void afterPropertiesSet() throws Exception {
        END_POINT = endpoint;
        KEY_ID = keyid;
        KEY_SECRET = keysecret;
        BUCKET_NAME = bucketname;
    }
}
